我正在使用OpenCV来调整JPG的大小。代码就像
im = cv2.imread(infile)
resized_im = cv2.resize(im, None, None, 0.5, 0.5, cv2.INTER_LINEAR)
cv2.imwrite(outfile, resized_im)
当查看已调整大小的图像时,我可以看到色度已被下采样。</ p>
$ identify -verbose input.jpg | grep samp
jpeg:sampling-factor: 1x1,1x1,1x1
$ identify -verbose resized.jpg | grep samp
jpeg:sampling-factor: 2x2,1x1,1x1
有没有办法改变这个?
谢谢!
答案 0 :(得分:1)
我在Android上工作,并尝试在Android CV中重现您的旧案例......我所做的就是关注......
Mat tempMat=new Mat();
Utils.bitmapToMat(bm, tempMat);
Mat tempMat1 = new Mat(tempMat.rows()/2, tempMat.cols()/2, tempMat.type());
Imgproc.resize(tempMat, tempMat1, new Size(), 0.5, 0.5, Imgproc.INTER_LINEAR);
Utils.matToBitmap(tempMat, bm);
bm = Bitmap.createBitmap(tempMat1.width(), tempMat1.height(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(tempMat1, bm);
然后我有一些代码将两个位图保存到文件中......我从我的Android设备下载到Ubuntu桌面后检查了保存的文件......
atul@ubuntu:~/Development/sdk/platform-tools$ ls -l IMG_?.jpg
-rw-r--r-- 1 atul atul 209336 Feb 13 09:58 IMG_1.jpg
-rw-r--r-- 1 atul atul 63237 Feb 13 09:58 IMG_2.jpg
atul@ubuntu:~/Development/sdk/platform-tools$ identify -verbose IMG_1.jpg | grep samp
jpeg:sampling-factor: 2x2,1x1,1x1
atul@ubuntu:~/Development/sdk/platform-tools$ identify -verbose IMG_2.jpg | grep samp
jpeg:sampling-factor: 2x2,1x1,1x1
你的代码和我的唯一区别是我使用了新的Size()并创建了一半大小的Destination Mat对象。你可以在你的代码中尝试以上两件事,看看它是否有效......
只是通过查看输出你得到的我认为它不是Chroma但是Lumina正在增加......在YCrCb色彩空间中,第一个元素是Lumina,第二个是色度红色,第三个是色度蓝色......
OpenCV文档中有一篇很好的文章来讨论Y Cr和Cb。以下是链接...
我不认为Android CV或C ++ CV或Python CV应该有任何区别,因为这三者都使用相同的底层原生CV代码......
希望这会有所帮助......