大佬教程收集整理的这篇文章主要介绍了使用OpenCv保存时图像透明度变暗,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用OpenCv来编写和读取png文件.
我注意到图像的透明度方面有些奇怪.几乎看起来透明度是根据OpenCv上的黑色计算的?看一下附加的图像,包含透明胶片的行.
通过将int数组传递给本机代码来纠正透明度,无需进行颜色转换:
通过将Bitmap对象传递给本机代码来增加透明度,需要进行颜色转换:
可能发生什么?
if ((error = AndroidBitmap_geTinfo(pEnv,jbitmap,&info)) < 0) { LOGE("AndroidBitmap_geTinfo() Failed! error:%d",error); } if (0 == error) { if ((error = AndroidBitmap_lockPixels(pEnv,&pixels)) < 0) { LOGE("AndroidBitmap_lockPixels() Failed ! error=%d",error); } } if (0 == error) { if (info.format == ANDROID_BITMAP_FORMAT_RGBA_8888) { LOGI("ANDROID_BITMAP_FORMAT_RGBA_8888"); } else { LOGI("ANDROID_BITMAP_FORMAT %d",info.format); } Mat bgra(info.height,info.width,CV_8UC4,pixels); Mat image; //bgra.copyTo(imagE); // fix pixel order RGBA -> BGRA cvtColor(bgra,image,COLOR_RGBA2BGRA); vector<int> compression_params; compression_params.push_BACk(CV_IMWRITE_PNG_COMPRESSION); compression_params.push_BACk(3); // save image if (!imwrite(filePath,compression_params)) { LOGE("saveImage() -> Error saving image!"); error = -7; } // release locked pixels AndroidBitmap_unlockPixels(pEnv,jbitmap); }
JNIEXPORT void JNICALL Java_com_vblast_smasher_smasher_saveImageRaw (jnienv *pEnv,jobject obj,jString jFilePath,jintArray jbgra,jint options,jint compression) { jint* _bgra = pEnv->GeTintArrayElements(jbgra,0); const char *filePath = pEnv->GetStringUTFChars(jFilePath,0); if (NULL != filePath) { Mat image; Mat bgra(outputHeight,outputWidth,(unsigned char *)_bgra); bgra.copyTo(imagE); if (0 == options) { // replace exisTing cache value mpCache->insert(filePath,imagE); } vector<int> compression_params; compression_params.push_BACk(CV_IMWRITE_PNG_COMPRESSION); compression_params.push_BACk(compression); // save image if (!imwrite(filePath,imagE)) { LOGE("saveImage() -> Error saving image!"); } } pEnv->ReleaseIntArrayElements(jbgra,_bgra,0); pEnv->ReleaseStringUTFChars(jFilePath,filePath); }
更新05/25/12:
经过一番研究后,我发现如果我从位图获取像素的int数组并将其直接传递给JNI,而不是我目前将整个Bitmap传递给JNI,那么这个问题就不会发生.然后获取像素并使用cvtColor正确转换像素.我使用正确的像素转换吗?
以上是大佬教程为你收集整理的使用OpenCv保存时图像透明度变暗全部内容,希望文章能够帮你解决使用OpenCv保存时图像透明度变暗所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。